package com.lis.scf.common.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 业务异常枚举类
 * 定义系统中所有业务相关的异常代码和描述
 */
@Getter
@AllArgsConstructor
public enum BusinessExceptionEnum {

    // 通用异常 10000-10099
    SYSTEM_ERROR(10000, "系统异常，请联系管理员"),
    PARAM_ERROR(10001, "参数校验失败"),
    RESOURCE_NOT_FOUND(10002, "请求资源不存在"),
    OPERATE_FAILED(10003, "操作失败"),

    // 用户相关异常 10100-10199
    USER_NOT_FOUND(10100, "用户不存在"),
    USERNAME_PASSWORD_ERROR(10101, "用户名或密码错误"),
    USER_DISABLED(10102, "用户已被禁用"),
    USER_ALREADY_EXISTS(10103, "用户名已存在"),
    MOBILE_ALREADY_BIND(10104, "手机号已被绑定"),

    // 企业相关异常 10200-10299
    COMPANY_NOT_FOUND(10200, "企业不存在"),
    COMPANY_ALREADY_EXISTS(10201, "企业已存在（统一社会信用代码重复）"),
    COMPANY_STATUS_ERROR(10202, "企业状态异常，无法操作"),

    // 认证相关异常 10300-10399
    AUTHENTICATION_FAILED(10300, "认证失败"),
    TOKEN_INVALID(10301, "令牌无效或已过期"),
    SMS_CODE_ERROR(10302, "短信验证码错误或已过期"),
    AUTH_STEP_ERROR(10303, "认证步骤错误，请按流程操作"),

    // 权限相关异常 10400-10499
    PERMISSION_DENIED(10400, "没有操作权限"),
    ROLE_NOT_FOUND(10401, "角色不存在"),
    MENU_NOT_FOUND(10402, "菜单不存在"),

    // 融资相关异常 10500-10599
    CREDIT_NOT_FOUND(10500, "授信额度不存在"),
    CREDIT_INSUFFICIENT(10501, "授信额度不足"),
    CONTACT_NOT_FOUND(10502, "联系人信息不存在"),

    // 商品相关异常 10600-10699
    PRODUCT_NOT_ADMITTED(10600, "商品未准入"),
    PRODUCT_ALREADY_EXISTS(10601, "商品已存在");

    /**
     * 错误代码
     */
    private final int code;

    /**
     * 错误消息
     */
    private final String msg;
}
